package com.qj.yantaishan.vo;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField;
import com.qj.yantaishan.common.annotation.Excel;
import com.qj.yantaishan.common.utils.StringUtils;
import lombok.Data;
import org.phprpc.util.PHPSerializer;

import java.lang.reflect.InvocationTargetException;

@Data
public class OrderReturnVo {
    private Long id;

    /**
     * 退货单号，分销订单退货单号统一
     * return.return_no
     */
    @Excel(name = "退货单号，分销订单退货单号统一")
    private String returnNo;

    /**
     * 退货申请时间
     * return.dateline
     */
    @Excel(name = "退货申请时间")
    private Long dateline;
    /**
     * 订单ID号
     * return.order_id
     */
    @Excel(name = "订单ID号")
    private Long orderId;
    /**
     * 订单号
     * return.order_no
     */
    @Excel(name = "订单号")
    private String orderNo;

    /**
     * 退货类型，1、买/卖双方协商一致，2、买错/多买/不想要，3、商品质量问题，4、未到货品，5、其它
     * return.type
     */
    @Excel(name = "退货类型，1、买/卖双方协商一致，2、买错/多买/不想要，3、商品质量问题，4、未到货品，5、其它")
    private Integer type;
    /**
     * 退货人的联系方式
     * return.phone
     * */
    @Excel(name = "退货人的联系方式")
    private String phone;
    /**
     * 外部交易单号
     * order.thrird_id
     */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String thirdId;
    /**
     * 申请状态，1：申请中，2：商家审核不通过，3：商家审核通过，4：退货物流，5：退货完成，6：退货取消
     * return.status
     */
    @Excel(name = "申请状态，1：申请中，2：商家审核不通过，3：商家审核通过，4：退货物流，5：退货完成，6：退货取消")
    private Integer status;
    /**
     * 商品名
     * product.name
     */
    @TableField(exist = false)
    private String productName;
    /**
     * 商品图片
     * product.image
     */
    @TableField(exist = false)
    private String productImage;

    /**returnProduct.proNum
     * 数量 */
    @Excel(name = "数量")
    private Long proNum;
    /**
     * 用户名
     * user.nickname
     */
    private String userName;
    @Excel(name = "收货地址")
    private String address;

    @TableField(exist = false)
    private String serializeAddr;

    public String getAddress() {
        return address;
    }

    public String getSerializeAddr() {
        return serializeAddr;
    }

    public void setSerializeAddr(String serializeAddr) {
        PHPSerializer ps = new PHPSerializer();
        AddressVo json = null;
        if (StringUtils.isNotEmpty( this.address)){
            try {
                json = (AddressVo) ps.unserialize(this.address.getBytes(),
                        AddressVo.class);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
            this.serializeAddr = JSON.toJSONString(json);
        }



    }

    public void setAddress(String address) {
        this.address = address;
        PHPSerializer ps = new PHPSerializer();
        AddressVo json = null;
        try {
            json = (AddressVo) ps.unserialize(this.address.getBytes(),AddressVo.class);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        this.serializeAddr = JSON.toJSONString(json);
    }
}
